<?php

namespace JJ;

class View
{
    public function start()
    {
        ob_start();
    }

    public function part($key)
    {
        $this->$key = ob_get_clean();
    }

    public function show($key)
    {
        return $this->$key??'';
    }

    public function fill($tpl)
    {
        extract($this->data);
        require TPL_PATH . $tpl;
    }


    /**
     * 视图渲染
     * @param string $tmpl 模板文件名
     * @param boolean $getContent 是否获取页面内容
     * @return void
     */
    public function display($tmpl, $getContent = false)
    {
        $tplFile = TPL_PATH . $tmpl . '.html'; // 模板文件地址
        if (!file_exists($tplFile)) {
            Common::showErrorMsg("Template file '{$tmpl}' does not exist");
        }

        if (!empty($this->data)) {
            // 从数组中将变量导入到当前的符号表
            extract($this->data);
        }

        ob_start(); // 打开输出控制缓冲
        require $tplFile; // 引入模板文件

        if ($getContent) {
            $output = ob_get_contents();
            ob_end_clean(); // 清空（擦除）缓冲区并关闭输出缓冲
            return $output;
        }

        // 冲刷出（送出）输出缓冲区内容并关闭缓冲
        ob_end_flush();
        return;
    }

    public function assign($key, $data)
    {
        $this->data[$key] = $data;
    }
}
